實作一個語音輸入文字輸出的工具。
可以搭配MDN
安裝/啟動
npm
來安裝:npm i啟動語音
window.SpeechRecognition
,Firefox 語音轉換 window.webkitSpeechRecognition
辨識語音設定
先宣告
const recognition = new SpeechRecognition();
使用 interimResult
控制語音辨識返回是即時或完整講完
recognition.interimResult = true;
使用 lang
設定辨識的語言
文字呈現
使用 p
tag 和 appendChild()
讓文字顯示上去
let p = document.createElement('p');
const words = document.querySelector('.words');
words.appendChild(p);
監聽 recognition ,啟動監聽 start()
說話測試看看 console
有沒有值跑出
recognition.addEventListener('result', e => {
console.log(e);
})
recognition.start();
之後說話,細找文字說話的紀錄會在 transcript
裡面
// e.results[0][0].transcript;
使用 Array.from
, map
把資料撈出來,用 join
把資料連接起來
使用 textContent
把資料寫進畫面
p.textContent = transcript;
使用 isFinal
增加判斷,確認句子說完了沒,說完在跳下一段落
if (e.results[0].isFinal) {
p = document.createElement('p');
words.appendChild(p);
}
當 speech recognition 服務中斷時再觸發
recognition.addEventListener('end', recognition.start);
判斷特定文字產生效果
const poopScript = transcript.replace(/大便|拉屎/gi, '💩');
p.textContent = poopScript;
// p.textContent = transcript;